package org.tp;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
import org.tp.*;

/** CLASSE LEA : stockage d'une classe ecrite en lea dans le but de
 * pouvoir l'analyser ensuite**/
public class ClasseLEA{
	private String nom;
	private VarGlob decl;
	private VarLocImp varLoc;
	private ListeFonction f;
	private Struct s;
	private FileWriter fw;
	private PrintWriter pw;

	public ClasseLEA(String name){
		f = new ListeFonction();
		varLoc = new VarLocImp(); 
		decl = new VarGlob();
		s = new Struct();
		nom = name;
	}

	/*Juste accesseur, les classes se charge du reste*/

	/** retourne les VARIABLE LOCALE**/
	public VarLocImp getVarLoc(){
		return this.varLoc;
	};

	/**retourne la liste des FONCTIONS**/
	public ListeFonction getFonction(){
		return f;
	}


	/** retourne les VARIABLE GLOBALE **/
	public VarGlob getVarGlob(){
		return this.decl;
	}
	/**retourne le nom de la fonction**/
	public String getName(){
		return this.nom;
	}
	/** retourne la structure**/
	public Struct getStruct(){
		return this.s;
	}

	/*
	public void addFonction(Fonction fon){
		f.addfonction(fon);
	}

	public void addVarGlob(Variable var){
		decl.addVar(var.getid(),var.getType(),var.getVal());
	}

	public void addvarLoc(Variable vars){
		varLoc.addVar(vars.getid(),vars.getType(),vars.getVal());
	}
	 */

	public void ecrire_fichier_class() throws IOException {
		//System.out.println("Nouvelle Classe Java " + nom + "..............................");
		try{
			fw = new FileWriter(nom+".java");
			pw = new PrintWriter(fw);
			pw.println("public class "+nom+" {");
			pw.flush();
		}catch(IOException e){
			System.out.println("erreur\n");
		}
	}

	public void ecrire_fin_fichier() {
		pw.println("}"); //a faire a la fin de la classe, dc dans le cup
		pw.flush();
	}
}

